/* 
* 规则：
*   一、例如：index/index，shop/index 以index结尾的，path和name默认去除index
*   二、例如：shop/index，默认生成name为shop_index （如果结尾为index，例如 shop/index 则是 shop）
*   三、填写后不会自动生成
*/

let routes = [
  {
    path: "/",
    redirect: {name: 'index'},
    // component: () => import('../../views/layout.vue'),
    component: 'layout',
    // 注册路由组件
    children: [
      {
        // path: '/index',
        // name: 'index',
        // component: () => import('../../views/index/index.vue')
        component: 'index/index',
        meta: {title: '后台首页'}
      },
      {
        // path: '/shop/goods/list',
        component: 'shop/goods/list',
        meta: {title: '商品列表'}
      },
      {
        component: 'shop/goods/create',
        meta: {title: '商品发布'}
      },
      {
        component: 'image/index',
        meta: {title: '相册管理'}
      },
      {
        component: 'print/index',
        meta: {title: '打印测试'}
      }
    ]
  },
  {
    // path: '/login',
    // name: 'login',
    // component: () => import('../../views/login/index.vue')
    component: 'login/index'
  },
  {
    path: '*',
    redirect: {name: 'index'}
  }
]

// 获取路由信息方法
let getRoutes = function () {
  // 自动生成路由
  createRoute(routes)
  return routes
}

function createRoute(arr) {
  arr.forEach(item=>{
    if(!item.component) return;
    // 生成name path 如果结尾有index 去除 index
    let val = sliceIndexStr(item.component)
    // 生成name
    item.name = item.name || val.replace(/\//g, '_')
    // 生成path
    item.path = item.path || `/${val}`
    // 自动生成component
    let myComponent = import(`../../views/${item.component}.vue`)
    item.component = () => myComponent
    if(item.children && item.children.length > 0){
      createRoute(item.children)
    }
  })
}

// 去除index
function sliceIndexStr(str) {
  // 获取最后一个/的索引 component: 'login/index'
  let index = str.lastIndexOf('/')
  // 获取最后一个/后面的值
  let val = str.substr(index+1)
  // 判断是不是index 结尾
  if(val === 'index'){
    return str.substring(0, index)
  }
  return str

}

export default getRoutes()